package com.nuo.laboratory.collection;

import org.junit.Test;

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.TreeMap;
import java.util.concurrent.ConcurrentHashMap;

/**
 * 在不考虑多线程，且不要求顺序的情况下，优先使用HashMap。它的各个方法效率是最高的。
 *
 * 在使用多线程时，考虑线程安全，优先使用 ConcurrentHashMap。
 *
 * 要求遍历数据顺序和插入数据顺序一致，使用LinkedHashMap。
 *
 * 要求数据按照某种规则排序时，使用TreeMap。
 * @author LGC
 * @date 2022/3/21 9:38
 */
public class MapTest {

    @Test
    public void treeMap(){
        Map<Integer,Integer> map = new TreeMap<>();
        map.put(1,1);
        map.put(2,2);
        map.put(3,3);
        map.put(4,4);
        map.put(5,5);
        map.keySet().forEach(System.out::println);
    }

    @Test
    public void hashMap(){
        Map<Integer,Integer> map = new HashMap<>();
        map.put(1,1);
        map.put(2,2);
        map.put(3,3);
        map.put(4,4);
        map.put(5,5);
        map.keySet().forEach(System.out::println);
    }
    @Test
    public void linkedHashMap(){
        Map<Integer,Integer> map = new LinkedHashMap<>();
        map.put(1,1);
        map.put(2,2);
        map.put(3,3);
        map.put(4,4);
        map.put(5,5);
        map.keySet().forEach(System.out::println);
    }
    @Test
    public void concurrentHashMap(){
        ConcurrentHashMap<Integer,Integer> map = new ConcurrentHashMap<>();
        map.put(1,1);
        map.put(2,2);
        map.put(3,3);
        map.put(4,4);
        map.put(5,5);
        map.keySet().forEach(System.out::println);
    }
}
